#include <iostream>
#include <vector>
#include <numeric>
using namespace std;

void vector_add_vector(vector<unsigned>& a, vector<unsigned>& b) {
    int i = 0;
    unsigned c = 0;
    while (i < a.size() && i < b.size()) {
        unsigned t = a[i] + b[i] + c;
        a[i] = t % 10;
        c = t / 10;
        ++i;
    }
    while (i < a.size()) {
        unsigned t = a[i] + c;
        a[i] = t % 10;
        c = t / 10;
        ++i;
    }
    while (i < b.size()) {
        unsigned t = b[i] + c;
        a.push_back(t % 10);
        c = t / 10;
        ++i;
    }
    while (c) {
        a.push_back(c % 10);
        c /= 10;
    }
}

vector<unsigned> vector_mul_number(const vector<unsigned>& v, unsigned n) {
    vector<unsigned> r;
    unsigned c = 0;
    for (auto i = 0; i < v.size(); ++i) {
        unsigned t = v[i] * n + c;
        r.push_back(t % 10);
        c = t / 10;
    }
    while (c) {
        r.push_back(c % 10);
        c /= 10;
    }
    return r;
}

void vector_display(const vector<unsigned>& v) {
    for (auto e : v)
        cout << e;
    cout << endl;
}

int main() {
    constexpr uint64_t limit = 100;
    vector<uint64_t> v {2};
    for (auto i = 1; i <= limit / 3; ++i) {
        v.push_back(1);
        v.push_back(2 * i);
        v.push_back(1);
    }
    // uint64_t tmp;
    // uint64_t num = 1;
    // uint64_t den = 0;
    vector<unsigned> num {1};
    vector<unsigned> den {0};
    for (int i = v.size() - 1; i >= 0; --i) {
        // tmp = num;
        // num = den;
        // den = tmp;
        // num += v[i] * den;
        // cout << num << endl;
        swap(den, num);
        vector<unsigned> tmp = vector_mul_number(den, v[i]);
        vector_add_vector(num, tmp);
    }
    cout << accumulate(num.begin(), num.end(), 0) << endl;
}